package vwg.na.vwm.rh.motorsdk.modelo.procesos.daoimpl;

import java.util.List;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import vwg.na.vwm.rh.motorsdk.modelo.procesos.IdeaProceso;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.dao.IdeIdeaNavesDAO;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.entidadesgrales.IdeIdeaNaves;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.entidadesgrales.IdeNave;
import vwg.na.vwm.rh.rhmotor.modelo.dao.GenericDAO;

@Repository
public class IdeIdeaNavesDAOImpl extends GenericDAO<IdeIdeaNaves> implements
	IdeIdeaNavesDAO {

    @SuppressWarnings("unchecked")
    @Override
    @Transactional(readOnly = true, propagation = Propagation.REQUIRED)
    public List<IdeIdeaNaves> getNavesByIdea(IdeaProceso ideaProceso) {
	return getHibernateTemplate().find("FROM IdeIdeaNaves as i "
		+ "LEFT JOIN FETCH i.ideNave as nave "
		+ "WHERE i.ideaProceso = ? ", ideaProceso);
    }

    @SuppressWarnings("unchecked")
    @Override
    @Transactional(readOnly = true, propagation = Propagation.REQUIRED)
    public List<IdeIdeaNaves> findNaveByIdeaAndNave(IdeaProceso idea,
	    IdeNave naveDB) {
	return getHibernateTemplate().find("FROM IdeIdeaNaves as i "
		+ "WHERE i.ideaProceso = ? and i.ideNave = ?", idea, naveDB);
    }

}
